 CREATE PROC [dbo].[Subsidy_UpdateTmpHavaleh_Over_Under]
    @assigedCreditValue MONEY,
    @TmpId NUMERIC(18, 0),
    @orderTrace VARCHAR(15),
    @TotPrice MONEY,
    @OverUnderId INT,
	@AccCode VARCHAR(5)
AS
DECLARE @id BIGINT = ISNULL(SCOPE_IDENTITY(), 0);
BEGIN TRY
    BEGIN TRAN;
    -----------------------------------------------------------------------------------------
    DECLARE @OverUnderPercent REAL = 0;
    DECLARE @autoidOverUnder INT =
            (
                SELECT AutoId
                FROM dbo.Over_Under WITH (NOLOCK)
                WHERE Active = 1
                      AND CONVERT(VARCHAR(10), GETDATE(), 111)
                      BETWEEN AzTarikh AND TaTarikh
                      AND ShowPrice = 4
            );
    DECLARE @orderTraceId UNIQUEIDENTIFIER =
            (
                SELECT Id FROM TmpHeadH WITH (NOLOCK) WHERE Id_Havaleh = @TmpId
            );
    IF (@TotPrice > 0)
        SET @OverUnderPercent = 100 - (((@TotPrice - @assigedCreditValue) / @TotPrice) * 100);
    ELSE
        SET @OverUnderPercent = 0;

    -------------------------------------------------------------------------------------------------
    UPDATE dbo.Tmp_Over_Under_Factor
    SET Price = @assigedCreditValue,
        [Percent] = @OverUnderPercent
    WHERE Id_Havaleh = @TmpId
          AND Code_Over_Under = @autoidOverUnder;
    -------------------------------------------------------------------------------------------------
	IF (SELECT  COUNT(*) FROM Tmp_Over_Under_Factor WHERE Id_Havaleh = @TmpId
          AND Code_Over_Under = @OverUnderId  ) > 0
    UPDATE dbo.Tmp_Over_Under_Factor
    SET Price = @TotPrice - @assigedCreditValue,
        [Percent] = 100
    WHERE Id_Havaleh = @TmpId
          AND Code_Over_Under = @OverUnderId;
		  ELSE
          INSERT INTO dbo.Tmp_Over_Under_Factor
          (
              Id_Havaleh,
              Name,
              Code_Over_Under,
              Type,
              Price,
              [Percent],
              Act_Code,
              Auto_id_Havaleh,
              Price_Row,
              Guy_Code,
              Max_Price,
              Max_percent,
              ShowPrice

          )
         
            SELECT @TmpId,name,@OverUnderId,0,@TotPrice - @assigedCreditValue,100,Act_Code,0,0,@AccCode,0,0,0
			FROM dbo.Over_Under WHERE AutoId=@OverUnderId
              
    -------------------------------------------------------------------------------------------------
    UPDATE TmpHeadH
    SET Items = -2,
        Tot_Kahandeh = @assigedCreditValue,
        Number_bar = @orderTrace
    WHERE Id_Havaleh = @TmpId
          AND Kind_Flag = '7';
    -------------------------------------------------------------------------------------------------
    UPDATE TmpHavaleh
    SET Status = 7
    WHERE Id_Havaleh = @TmpId;
    -------------------------------------------------------------------------------------------------
	DECLARE @SubsidyHeaderId UNIQUEIDENTIFIER=(SELECT TOP(1) id FROM dbo.SubsidyHeader WHERE IdHavaleh=@TmpId )
    INSERT INTO dbo.SubsidyDetails
    (
        SubsidyHeaderId,
        CommodityCode,
        GoodsCode,
        Quantity,
        unitCode,
        Amount
    )
    SELECT @SubsidyHeaderId,
           K_Code,
           K_Code,
           K_Qty1,
           R_Unit1_2,
           Tot_Forosh
    FROM TmpHavaleh
    WHERE Id_Havaleh = @TmpId;
    COMMIT TRAN;
    RETURN @id;
END TRY
BEGIN CATCH
    ROLLBACK TRAN;
    SET @id = -1;
    RETURN @id;
END CATCH;
